import {usePermissionStore} from "@/store";

const directiveRole = (el, binding) => {
    const permission = usePermissionStore();
    //获取指令传递过来的数据
    const { value } = binding;
    //获取pania中的角色信息
    const roles = permission.roles;
    //判断指令是否传值 传递的值是否是一个数组 数组是否大于0
    if (value && value instanceof Array && value.length > 0) {
        /**
         * some:用于检测数组中的元素是否满足指定的条件，并不会改变原来的数组 返回true/flase
         */
        const hasRole = roles.some(item => {
            /**
             * includes: 用于判断字符串是否包涵某个指定的子字符串
             */
            return value.includes(item);
        });
        //如果没有该角色
        if (!hasRole) {
            if (el.parentNode) {
                //把对应的元素给删掉
                el.parentNode.removeChild(el);
            }
        }
    } else {
        throw new Error(`请设置${value}对应角色标签`);
    }
}

const directivePerms = (el, binding) => {
    const { value } = binding;
    const permission = usePermissionStore();
    //获取权限数据
    const permissions = permission.perms;
    //判断值是否存在 是否属于数组 是否大于0
    if (value && value instanceof Array && value.length > 0) {
        const hasPerms = permissions.some(item => value.includes(item));
        if (!hasPerms) {
            if (el.parentNode) {
                el.parentNode.removeChild(el);
            }
        }
    } else {
        throw new Error(`请设置${value}对应的权限标签`)
    }
}

export {
    directiveRole,
    directivePerms
}
